From 874fe2638a9a5596d8c97c2e86a482150e87a130 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sat, 23 Jan 2016 14:54:35 +0300 Subject: [PATCH] metadata: add version to format --- src/bin/metadata.rs | 28 +++++++++++++++----------- src/cargo/ops/cargo_output_metadata.rs | 9 +++++++-- tests/test_cargo_metadata.rs | 6 ++++-- 3 files changed, 27 insertions(+), 16 deletions(-) diff --git a/src/bin/metadata.rs b/src/bin/metadata.rs index 599cce242..805d2fac1 100644 --- a/src/bin/metadata.rs +++ b/src/bin/metadata.rs @@ -11,14 +11,15 @@ use cargo::util::{CliResult, Config}; #[derive(RustcDecodable)] struct Options { + flag_color: Option, flag_features: Vec, + flag_format_version: u32, flag_manifest_path: Option, flag_no_default_features: bool, flag_output_format: String, flag_output_path: Option, - flag_verbose: bool, flag_quiet: bool, - flag_color: Option, + flag_verbose: bool, } pub const USAGE: &'static str = " @@ -29,16 +30,18 @@ Usage: cargo metadata [options] Options: - -h, --help Print this message - -o, --output-path PATH Path the output is written to, otherwise stdout is used - -f, --output-format FMT Output format [default: toml] - Valid values: toml, json - --features FEATURES Space-separated list of features - --no-default-features Do not include the `default` feature - --manifest-path PATH Path to the manifest - -v, --verbose Use verbose output - -q, --quiet No output printed to stdout - --color WHEN Coloring: auto, always, never + -h, --help Print this message + -o, --output-path PATH Path the output is written to, otherwise stdout is used + -f, --output-format FMT Output format [default: toml] + Valid values: toml, json + --features FEATURES Space-separated list of features + --no-default-features Do not include the `default` feature + --manifest-path PATH Path to the manifest + --format-version VERSION Format version [default: 1] + Valid values: 1 + -v, --verbose Use verbose output + -q, --quiet No output printed to stdout + --color WHEN Coloring: auto, always, never "; pub fn execute(options: Options, config: &Config) -> CliResult> { @@ -57,6 +60,7 @@ pub fn execute(options: Options, config: &Config) -> CliResult> { no_default_features: options.flag_no_default_features, output_format: options.flag_output_format, output_to: output_to, + version: options.flag_format_version, }; try!(output_metadata(options, config)); diff --git a/src/cargo/ops/cargo_output_metadata.rs b/src/cargo/ops/cargo_output_metadata.rs index 6d4415e51..72d4ab50a 100644 --- a/src/cargo/ops/cargo_output_metadata.rs +++ b/src/cargo/ops/cargo_output_metadata.rs @@ -10,6 +10,7 @@ use toml; use util::config::Config; use util::{paths, CargoResult}; +const VERSION: u32 = 1; /// Where the dependencies should be written to. pub enum OutputTo { @@ -19,10 +20,11 @@ pub enum OutputTo { pub struct OutputMetadataOptions<'a> { pub features: Vec, - pub output_format: String, - pub output_to: OutputTo, pub manifest_path: &'a Path, pub no_default_features: bool, + pub output_format: String, + pub output_to: OutputTo, + pub version: u32, } /// Loads the manifest, resolves the dependencies of the project to the concrete @@ -54,9 +56,11 @@ pub fn output_metadata(opt: OutputMetadataOptions, config: &Config) -> CargoResu opt.no_default_features)); let (packages, resolve) = deps; + assert_eq!(opt.version, VERSION); let output = ExportInfo { packages: &packages, resolve: &resolve, + version: VERSION, }; let serialized_str = match &opt.output_format.to_ascii_uppercase()[..] { @@ -78,6 +82,7 @@ pub fn output_metadata(opt: OutputMetadataOptions, config: &Config) -> CargoResu struct ExportInfo<'a> { packages: &'a [Package], resolve: &'a Resolve, + version: u32, } diff --git a/tests/test_cargo_metadata.rs b/tests/test_cargo_metadata.rs index 7ae3df669..4dc307c92 100644 --- a/tests/test_cargo_metadata.rs +++ b/tests/test_cargo_metadata.rs @@ -14,7 +14,8 @@ test!(cargo_metadata_simple { let p = project("foo") .file("Cargo.toml", &basic_bin_manifest("foo")); - assert_that(p.cargo_process("metadata"), execs().with_stdout(r#" + assert_that(p.cargo_process("metadata"), execs().with_stdout(r#"version = 1 + [[packages]] dependencies = [] id = "foo 0.5.0 [..]" @@ -76,7 +77,8 @@ test!(cargo_metadata_simple_json { "dependencies" : [] }, "metadata": null - } + }, + "version": 1 }"#.split_whitespace().collect::())); }); -- 2.30.2